#ifndef SHAPE_H
#define SHAPE_H
#include <string>
using namespace std;

/**
 * Generic shape class
 * Defines the interface for all shapes.
 * @author: Brad Rippe (brippe@fullcoll.edu)
 */
class Shape {
public:
	
	/**
	 * Constructs a Shape
	 */
	Shape();
    
	/** 
	 * Constructs a Shape with the color and determines if it is filled
	 * @param aColor the color of the shape
	 * @param aFilled true if the Shape if filled otherwise false
	 */
	Shape(string aColor, bool aFilled);
    
	/**
	 * Gets the Shape's color
	 * @return the color of the Shape
	 */
	string getColor();
    
	/**
	 * Sets the color of the Shape
	 * @param aColor the new color of the Shape
	 */
	void setColor(string aColor);
    
	/**
	 * Determines if the Shape if filled
	 * @return true if the Shape is filled, otherwise false
	 */
	bool isFilled();
    
	/**
	 * Sets whether or not the Shape is filled
	 * @param aFilled true if the Shape is filled, otherwise false
	 */
	void setFilled(bool filled);
    
	/**
	 * Returns a string representation of the Shape
	 * @return the string representation
	 */
	string toString();

  private:
    string mColor;
    bool mFilled;
};
#endif
